/**
 *@brief	��Ҫ���Ƕ�����һЩ���õķ�����������ִ�й���л��õ��ķ��� 
 *@date		2015-12-14
 *@author	ikangtai-wangwei
 *@copyright iknagtai corp
 **/



#include <time.h>
#include "al.h" 
#ifndef COMMON_HEAD
#define COMMON_HEAD 

#define TEST_ALL_PRINT
#define JAVA_OUTPUT
//#define TEST_ALL_FILE 
#define TEST_OUTPUT 1
#define DEBUGPRINT(s) printf("[%s:%d],FUCTION:%s-->%s",__FILE__,__LINE__,__FUNCTION__,s)

// 
#define TEST_TREVAL_BBT_DATA   1    
/**
 *@brief ��Ҫ�Ǽ���N��֮������һ��
 *@note  ���裺7��8�գ�2��֮����7��10�գ�Ҳ����δ����7��8����һ�죬\n
 *		 ��������������5�����֣��ǰ��п�ʼ��һ��ģ�������ʹ�õ� \n
 *       ʱ��Ҫע������N-1������Ҫ�ر�ע��
 *@param time_t* timeStart ����Ŀ�ʼʱ�� 
 *@param int     days      ��Ҫ��������� 
 *@param time_t* timeEnd   �ó��Ľ��ʱ�� 
 *@return bool true:�ó��˼����� false���������ݲ����Ҫ�󣬼��㲻������� 
 **/
bool setCalenderAfterNDays(time_t * timeStart, int days, time_t *timeEnd);

/**
 *@brief	����end-start֮������� 
 *@param	time_t const *start
 *@param	time_t const *end
 *@return	int ����������� 
 *@note
 **/ 
int getDaysDiff(time_t *start, time_t *end);
/**
 *@brief    ���������ݣ�������ݵ����������ĵ�һ���µľ�ֵ 
 *@param	float old 
 *@param	float last 
 *@param	int num 
 *@return	float �����µľ�ֵ 
 *@note
 **/ 
float getAverageCount(float old,float last,int num);

/**
 *@brief    ���������ݣ�������ݵ�����������ֵ���س�ԭ��δ�����ֵ 
 *@param	float old 
 *@param	float last 
 *@param	int num 
 *@return	float �����ϵľ�ֵ 
 *@note
 **/ 
float resumeAverage(float old,float last,int num);

/**
 *@brief    ���һ��cycleFlag��ݽṹ 
 *@return	cycleFlag* 
 *@note
 **/ 
cycleFlag *initCycleFlag2();

/**
 *@brief    ͨ��cycle��ݣ������¸����ڵ�cycle��� 
 *@param	cycleUnitDS* oldCycle �����cycle���	
 *@param	cycleUnitDS* nextCycle Ԥ���cycle��� 
 *@param	userUnitDS	userData�û���ͳ����� 
 *@return	bool true:��ʾ����ɹ� false:��ʾ����ʧ�� 
 *@note		ע������������һ�����ڵ�cycle��ݣ�����Ԥ��� 
 **/ 
int throughCycleGetNextCycle(cycleUnitDS *oldCycle,cycleUnitDS *nextCycle,userUnitDS userData);

/**
 *@brief    ͨ��cycle��ݣ�����ǰһ�����ڵ�cycle��� 
 *@param	cycleUnitDS* oldCycle �����cycle���	
 *@param	cycleUnitDS* foreCycle Ԥ���ǰһ��cycle��� 
 *@param	userUnitDS	userData�û���ͳ����� 
 *@return	bool true:��ʾ����ɹ� false:��ʾ����ʧ�� 
 *@note		ע������������ǰһ�����ڵ���ݣ������������ֻ�����û���һ��ʹ�õ�ʱ�� 
 **/ 
int throughCycleGetForeCycle(cycleUnitDS *oldCycle,cycleUnitDS *foreCycle,userUnitDS userData);
/**
 *@brief    ͨ��cycle��ݣ��õ�������ڵ�ÿ������ 
 *@param	cycleUnitDS *cycleOutput �����cycle��� 
 *@param	dayUnitDSOutput *daysData �����day��� 
 *@param	int dayStartIndex	�����day�������е���ʼλ�� 
 *@return	bool true:��ʾ����ɹ� false:��ʾ����ʧ�� 
 *@note
 **/ 
int throughCycleGetDayData(cycleUnitDS *cycleOutput,dayUnitDSOutput *daysData,int dayStartIndex);



/**
 *@brief    �˺������ҪĿ����Ϊ�˰�����ľ��ڿ�ʼ�����ڽ��������գ���һ�εľ��ڿ�ʼ��ת��Ϊÿһ�����ݣ��Թ�APPʹ��
 *@param	time_t tps
 *@param	bool psConfirm
 *@param	time_t tpe
 *@param	bool peConfirm
 *@param	time_t tov
 *@param	bool ovConfirm
 *@param	time_t tnps
 *@param	time_t tdgs
 *@param	bool dgsConfirm
 *@param	time_t tdge
 *@param	bool dgeConfirm
 *@param	dayUnitDSOutput *daysData
 *@return	int true:��ʾ����ɹ� false:��ʾ����ʧ�� 
 *@note
 **/ 
int outputDaysUnit(time_t tps,bool psConfirm,time_t tpe,bool peConfirm,time_t tov,bool ovConfirm,time_t tnps,
					time_t tdgs,bool dgsConfirm,time_t tdge,bool dgeConfirm,dayUnitDSOutput *daysData);




					
int getAllCycleOutput(cycleUnitDS *cycleOutput,int cycleNum,userUnitDS *userData); 
int getAllDayOutput(cycleUnitDS *cycleOutput,int cycleNum,dayUnitDSOutput *daysData,userUnitDS *userData,int *daysOutputLength); 
int getAllOutput(cycleUnitDS *cycleOutput,int cycleNum,dayUnitDSOutput *daysData,userUnitDS *userData,int *daysOutputLength);

void showTimeToDate(time_t time);

#endif
